package gruppenkalenderProjekt;

import gruppenkalenderProjekt.data.Benutzer;
import gruppenkalenderProjekt.data.Kalender;
import gruppenkalenderProjekt.data.Kalendereintrag;
import gruppenkalenderProjekt.data.Kategorie;
import java.awt.Color;
import java.rmi.RemoteException;
import java.sql.Date;
import java.sql.Time;
import java.util.Vector;

/** Interface Klasse der Verwaltung
 *
 * @author Rathke, Thies
 * @coauthor Gruppe2
 */

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.8594CEAF-E60E-3D80-7E83-A71E99B3D2AD]
// </editor-fold> 
public interface Verwaltung extends java.rmi.Remote{

    
/** Methoden dienen dazu Benutzerobjekte, Kategorieobjekte, Kalenderobjekte, Kalendereintragobjekte
 * anzulegen upzudaten, loeschen und zu getten
 *
 */
    public Benutzer createBenutzer(String benutzername, String vorname,
            String nachname, String raum, String email, String telefon, boolean superbenutzer) throws java.rmi.RemoteException;
    public Benutzer updateBenutzer(Benutzer benutzer) throws java.rmi.RemoteException;
    public void deleteBenutzer(Benutzer benutzer) throws java.rmi.RemoteException;
    public Vector<Benutzer> getAlleBenutzer() throws java.rmi.RemoteException;
    public Benutzer getBenutzerMitID(int b_ID)throws java.rmi.RemoteException;
    public Benutzer getBenutzerMitBenutzername(String benutzername)throws java.rmi.RemoteException;
    public Vector<Benutzer> getBenutzerVonKalender(int k_ID)throws java.rmi.RemoteException;



    public Kategorie createKategorie(String bezeichnung, Color farbe) throws java.rmi.RemoteException;
    public Kategorie updateKategorie(Kategorie kategorie) throws java.rmi.RemoteException;
    public void deleteKategorie(Kategorie kategorie) throws java.rmi.RemoteException;
    public Vector<Kategorie> getAlleKategorien()throws java.rmi.RemoteException;
    public Kategorie getKategorieMitID(int kat_ID)throws java.rmi.RemoteException;

    public Kalender createKalender(String name, Vector<Kalendereintrag> kalendereintraege,
            Vector<Benutzer> benutzer,Benutzer besitzer) throws java.rmi.RemoteException;
    public Kalender updateKalender(Kalender kalender) throws java.rmi.RemoteException;
    public void deleteKalender(Kalender kalender) throws java.rmi.RemoteException;
    public Vector<Kalender> getAlleKalender()throws java.rmi.RemoteException;
    public Kalender getKalenderMitID(int id)throws java.rmi.RemoteException;
    public Kalender getKalenderMitIDVonBenutzer(int k_ID, int b_ID) throws java.rmi.RemoteException;
    public Vector<Kalender> getAlleKalenderVonBenutzer(int b_id) throws java.rmi.RemoteException;

    public Kalendereintrag createKalendereintrag(String titel, Kategorie kategorie, Benutzer ersteller,
            String beschreibung, String ort, Date startdatum, Time startzeit, Date enddatum,
            Time endzeit,boolean erinnerung, int zeitdifferenz, boolean alarm, Vector<Benutzer> teilnehmer,
            Kalendereintrag folgetermin, int kalender_ID, int wiederholung) throws java.rmi.RemoteException;
    public Kalendereintrag updateKalendereintrag(Kalendereintrag kalendereintrag) throws java.rmi.RemoteException;
    public void deleteKalendereintrag(Kalendereintrag kalendereintrag) throws java.rmi.RemoteException;
    public Vector<Kalendereintrag> getAlleKalendereintraege()throws java.rmi.RemoteException;
    public Kalendereintrag getKalendereintragMitID(int e_ID)throws java.rmi.RemoteException;
    public Vector<Kalendereintrag> getKalendereintraegeVonKalender(int k_ID)throws java.rmi.RemoteException;
    public Vector<Kalendereintrag> getAlleKalendereintraegeVonBenutzer(int b_ID)throws java.rmi.RemoteException;
    public Vector<Kalendereintrag> getKalendereintraegeVonKalenderVonBenutzer(int k_ID, int b_ID) throws java.rmi.RemoteException;
    public Vector<Kalender> getAlleKalenderVonSuperbenutzer(int b_id) throws java.rmi.RemoteException;

    public boolean isKalendereintragStartzeitZulaessig(Kalendereintrag k)throws java.rmi.RemoteException;


    public boolean existiertBenutzerMitBenutzername(String benutzername, Benutzer aktuellerBenutzer)throws java.rmi.RemoteException;

}

